硬件SDK(Xlink Device SDK)相关 API-FUNCTION(函数)接口及说明如下:
1. 初始化SDK
xlink_int32 xlink_sdk_init(struct xlink_sdk_instance_t** sdk_instance);
功能:初始化SDK函数。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 0 成功 1 失败
2. 反初始化SDK
xlink_int32 xlink_sdk_uninit(struct xlink_sdk_instance_t** sdk_instance);
功能:停止SDK调用。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 0 成功 1 失败
3. 启用外网通讯
xlink_int32 xlink_sdk_connect_cloud(struct xlink_sdk_instance_t** sdk_instance);
功能:启动外网通讯,需要在初始化SDK示例后调用。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 0 成功 1 失败
4. 停止外网通讯
xlink_int32 xlink_sdk_disconnect_cloud(struct xlink_sdk_instance_t** sdk_instance);
功能:停止外网通讯,在tcp连接断开时调用,调用后等tcp连接上服务器需要调用xlink_sdk_connect_cloud()来启用外网。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 0 成功 1 失败
5. SDK后台执行函数
void xlink_sdk_process(struct xlink_sdk_instance_t** sdk_instance);
功能:SDK后台执行函数,用户需要一直循环调用。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 0 成功 1 失败
6. 重置SDK
xlink_int32 xlink_sdk_reset(struct xlink_sdk_instance_t** sdk_instance);
功能:重置SDK,将SDK保存到设备flash的数据清空。当sdk被初始化后,调用此函数后,sdk会被重新初始化;相反停止sdk。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 0 成功 1 失败
7. SDK写入Flash数据
xlink_int32 xlink_write_flash_cb(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength);
功能:此函数需要用户去实现,保存数据到flash。
参数 说明 **sdk_instance sdk 实例指针的指针 **data 写入数据指针的指针 datalength 写入数据指针长度 返回 说明 xlink_int32 返回实际长度 1 失败
8. SDK读取Flash数据
xlink_int32 xlink_read_flash_cb(struct xlink_sdk_instance_t** sdk_instance, xlink_uint8** buffer, xlink_int32 datamaxlength);
功能:此函数需要用户去实现,读取flash数据到buffer。
参数 说明 **sdk_instance sdk 实例指针的指针 **buffer 存放数据指针的指针 datamaxlength 存放数据指针可用空间 返回 说明 xlink_int32 返回实际长度 1 失败
9. 发送数据
xlink_int32 xlink_send_cb(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength, const xlink_addr_t** addr_t, xlink_uint8 flag);
功能:此函数需要用户去实现,将数据内容发送到外网或内网。
参数 说明 **sdk_instance sdk 实例指针的指针 **data 数据指针的指针 datalength 数据指针长度 **addr_t 目标地址 flag 0 表示内网数据,1 表示外网数据 返回 说明 xlink_int32 返回实际长度 1 失败
10. 接收数据函数
xlink_int32 xlink_receive_data(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength, const xlink_addr_t** addr_t, xlink_uint8 flag);
功能:当设备接收到外网或内网数据,调用此接口处理。
参数 说明 **sdk_instance sdk 实例指针的指针 **data 存入的数据 datalength 数据长度 **addr_t 目标地址,flag为1时为NULL flag 0表示接收的是内网数据,1表示接收的是外网数据,其他保留 返回 说明 0 转发成功 1 转发失败
11. 获取数据端点
xlink_int32 xlink_get_datapoint_cb(struct xlink_sdk_instance_t** sdk_instance, xlink_uint8** buffer, xlink_int32 datamaxlength);
功能:此函数需要用户去实现内容,通常是服务器或者APP向设备获取数据端点时被调用,用户将设备所有的数据内容存放到data。
参数 说明 **sdk_instance sdk 实例指针的指针 **buffer 存放数据指针 datamaxlength 存放数据指针可用空间 返回 说明 xlink_int32 返回实际长度
12. 设置数据端点
xlink_int32 xlink_set_datapoint_cb(struct xlink_sdk_instance_t** sdk_instance, const xlink_uint8** data, xlink_int32 datalength);
功能:此函数需要用户去实现,通常是服务器或者APP向设备发送数据端点时被调用。
参数 说明 **sdk_instance sdk 实例指针的指针 **data 数据端点内容 datalength 数据端点内容长度 返回 说明 xlink_int32 返回实际长度
13. SDK事件通知
void xlink_event_cb(struct xlink_sdk_instance_t** sdk_instance, const struct xlink_sdk_event_t** event_t);
功能:此函数需要用户去实现,当SDK事件被触发时会进入此函数,用户判断事件类型来处理对应的事务。
参数 说明 **sdk_instance sdk 实例指针的指针 **event_t sdk 实例指针的指针 返回 说明 — — 事件内容,具体参考“xlink_sdk_event_t”定义
14. 获取tick
xlink_uint32 xlink_get_ticktime_ms_cb(struct xlink_sdk_instance_t** sdk_instance);
功能:此函数需要用户去实现,获取系统tick time,单位ms。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 xlink_uint32 返回系统tick time
15. 发送数据端点数据到服务器
xlink_int32 xlink_update_datapoint(struct xlink_sdk_instance_t** sdk_instance, xlink_uint16* messageid, const xlink_uint8** data, xlink_int32 datamaxlength, xlink_uint8 flag);
功能:发送数据端点数据到服务器与APP。当服务收到后会通过“xlink_event_cb”事件来通知,通知类型为“EVENT_TYPE_REQUEST_CB”。
参数 说明 **sdk_instance sdk 实例指针的指针 *messageid 消息ID,SDK分配 **data 发送的数据 datamaxlength 数据长度(SDK单次发送数据数据不能超过1000字节) flag bit0 : 代表是否要触发告警,1是,0否 bit1 : 代表数据端点是否带有时间戳(毫秒-8个字节Unix时间戳-data=time+datapoint ),1是,0否(V6223以上版本) 返回 说明 xlink_uint32 上报的数据长度 -1 上报失败 使用样例:
16. 向服务器请求数据
xlink_int32 xlink_request_event(struct xlink_sdk_instance_t** sdk_instance, xlink_uint16* messageid, struct xlink_sdk_event_t* event_t);
功能:通过外网请求服务器数据。当服务收到后会通过“xlink_event_cb”事件来通知,通知类型为对应的请求类型。
参数 说明 **sdk_instance sdk 实例指针的指针 *messageid 消息ID,SDK分配 *event_t 请求的事件类型 返回 说明 0 转发成功 1 转发失败
17. 获取Device ID
xlink_int32 xlink_get_device_id(struct xlink_sdk_instance_t **sdk_instance);
功能:获取设备ID。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 xlink_int32 小于1表示无效,其他有效
18. 获取Device Key
xlink_int32 xlink_get_device_key(struct xlink_sdk_instance_t **sdk_instance, xlink_uint8 **buffer);
功能:获取设备KEY。
参数 说明 **sdk_instance sdk 实例指针的指针 **buffer 外部用于缓存key的指针的指针 返回 说明 xlink_int32 返回长度为16时buffer数据有效
19. 上报log
xlink_int32 xlink_report_log(struct xlink_sdk_instance_t** sdk_instance, xlink_uint8 log_level, xlink_uint8** data, xlink_uint32 datalength);
功能:上报不同级别的log 信息,可以通过log_level设置。
参数 说明 **sdk_instance sdk 实例指针的指针 log_level 0:DEBUG 1:INFO 2:WARN 3:ERROR **data log数据指针的指针 datalength log数据长度 返回 说明 xlink_int32 >=0:成功 -1:失败 -2:数据过长 -3:log_level非法 -4:设备没激活
20. 上报设备位置信息
XLINK_FUNTION xlink_int32 xlink_upload_location_data(struct xlink_sdk_instance_t **sdk_instance, struct xlink_location_t **xlink_location, xlink_uint16 *message_id);
功能:上报设备位置信息,若需要判断是否上报成功,可以在通过判断“EVENT_TYPE_REQUEST_CB”事件的 message id与上报,确定是否成功。
参数 说明 **sdk_instance sdk 实例指针的指针 **xlink_location 位置实例指针的指针 *message_id message id的指针 返回 说明 xlink_int32 >=0 成功 -1 设备未上线 -2 地址信息大于500bytes
21. 通知云端开始产测
XLINK_FUNTION xlink_int32 xlink_production_test_start(struct xlink_sdk_instance_t **sdk_instance);
功能:通知云端设备开始产测,此接口仅在脱离产测工具的测试环境下测试才调用。
备注:
- 通知成功会触发“EVENT_TYPE_PRODUCTION_TEST”。
- 若(*event_t)->event_struct_t.pdct_cb_t.pdct_event_t为EVENT_TYPE_ENTER_PDCT_TEST_SUCCESS,表示成功。
- 若(*event_t)->event_struct_t.pdct_cb_t.pdct_event_t为EVENT_TYPE_ENTER_PDCT_TEST_FAIL,表示失败。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 xlink_int32 >=0 成功 -1 设备未上线
22. 通知云端结束产测
XLINK_FUNTION xlink_int32 xlink_cloud_production_test_end(struct xlink_sdk_instance_t sdk_instance, xlink_uint8 data, xlink_int32 datalength);
功能:通知云端设备结束产测,并上报产测结果数据。此接口仅在脱离产测工具的测试环境下测试才调用,调通后会重置设备以及云端设置。
备注:
- 通知成功会触发“EVENT_TYPE_PRODUCTION_TEST”。
- 若产测事件类型为EVENT_TYPE_PDCT_TEST_END_SUCCESS,表示成功。请主动断开tcp与服务器连接,并停止重连操作,否则设备会重新激活上线。
- 若产测事件类型为EVENT_TYPE_PDCT_TEST_END_FAIL,表示失败。
参数 说明 **sdk_instance sdk 实例指针的指针 **data 产测结果数据指针的指针 datalength 产测结果数据长度 返回 说明 xlink_int32 >=0 成功 -1 设备未上线
23. 产测工具获取信号强度,WIFI工作模式的回调
XLINK_FUNTION xlink_int32 xlink_get_rssi_cb(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 *result, xlink_int16 *rssi, xlink_uint16 *AP_STA);
功能:产测获取信号强度的流程,会回调此函数拿信号强度和工作模式
参数 说明 **sdk_instance sdk 实例指针的指针 *result 接收处理结果的指针 0:成功 1:失败 *rssi 接收信号强度的指针 *AP_STA wifi模式,0:STA模式 1:AP模式 2:非wifi固件 返回 说明 xlink_int32 0 成功 !=0 失败
24. 产测工具获取自定义产测数据的回调
XLINK_FUNTION xlink_int32 xlink_get_custom_test_data_cb(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 *result,xlink_uint8 **data, xlink_int32 datamaxlength);
功能:产测自定义产测数据的流程,会回调此函数拿自定义产测数据。
参数 说明 **sdk_instance sdk 实例指针的指针 *result 接收处理结果的指针 0:成功 1:失败 **data 自定义产测数据指针的指针 datamaxlength SDK能接收最大的自定义产测数据的长度 返回 说明 xlink_int32 0 成功 !=0 失败
25. 使能产测
XLINK_FUNTION xlink_int32 xlink_enable_production_test(struct xlink_sdk_instance_t **sdk_instance, xlink_uint8 flag);
功能:
参数 说明 **sdk_instance sdk 实例指针的指针 flag 0:失能 1:使能 返回 说明 xlink_int32 0 成功 !=0 失败
26. 使能配对
XLINK_FUNTION xlink_int32 xlink_enable_local_pairing(struct xlink_sdk_instance_t **sdk_instance, xlink_uint16 time);
功能:使能配对,并指定时间,在时间范围内可以进行配对。
参数 说明 **sdk_instance sdk 实例指针的指针 time 使能时间(单位:秒),0为无限制时长 返回 说明 xlink_int32 0 成功 !=0 失败
27. 失能配对
XLINK_FUNTION xlink_int32 xlink_disable_local_pairing(struct xlink_sdk_instance_t **sdk_instance);
功能:失能配对,分享设备的途径配对会跳过此配置。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 xlink_int32 0 成功 !=0 失败
28. APP probe设备
XLINK_FUNTION xlink_int32 xlink_probe_datapoint_cb(struct xlink_sdk_instance_t **sdk_instance, const xlink_uint8 ** dp_idx, xlink_uint8 dp_idx_length, xlink_uint8 **buffer, xlink_int32 datamaxlength) ;
功能:APP在probe设备时,会回调此函数获取对应的数据端点。
参数 说明 **sdk_instance sdk 实例指针的指针 **dp_idx 需要probe数据端点的index数组的指针 dp_idx_length 需要probe数据端点的index数组的长度 **buffer 需要返回给SDK对应的数据端点的数据 datamaxlength SDK可以接收数据端点数据的最大长度 返回 说明 xlink_int32 0 没有数据端点数据 >0 数据端点数据的实际长度
29. 使能订阅
XLINK_FUNTION extern xlink_int32 xlink_enable_local_subscription(struct xlink_sdk_instance **sdk_instance, xlink_uint16 time);
功能:使能订阅,并指定时间,在时间范围内可以进行订阅,最大有效时间300秒。
参数 说明 **sdk_instance sdk 实例指针的指针 time 使能时间(单位:秒),0为无限制时长 返回 说明 xlink_int32 0 成功 !=0 失败
30. 失能订阅
XLINK_FUNTION extern xlink_int32 xlink_disable_local_subscription(struct xlink_sdk_instance **sdk_instance);
功能:失能订阅。
参数 说明 **sdk_instance sdk 实例指针的指针 返回 说明 xlink_int32 0 成功 !=0 失败
31. 上报固件版本
XLINK_FUNTION xlink_int32 xlink_update_current_verison(struct xlink_sdk_instance** sdk_instance, xlink_uint8 id_count, void * data);
功能:上报固件版本。
参数 说明 **sdk_instance sdk 实例指针的指针 id_count 设备上报的数量 *data 传入组合型的 xlink_upgrade_version_package_t 定义的数据包组合 返回 说明 xlink_int32 0 成功 !=0 失败
32. 物模型数据下发
- XLINK_FUNTION xlink_int32 xlink_attribute_set_service_cb(struct xlink_sdk_instance*sdk_instance, const char payload, xlink_uint16 payload_length, xlink_uint8 *data, xlink_int32datamaxlength);
功能:此函数需要用户去实现,当物模型数据下发时触发此函数,用户自行实现处理。
参数 说明 **sdk_instance sdk 实例指针的指针 * payload 物模型下发数据 payload_length 物模型下发数据长度 * data 物模型返回数据 datamaxlength 最大数据返回长度 返回 说明 xlink_int32 数据返回长度 下发数据格式,input为用户收到的属性数据
{ "v":2, "input":{ "属性字段":属性值 } }
返回数据格式
{ "v": 2, "code": 200, "output":{} }
33. 物模型数据上报
- XLINK_FUNTION xlink_int32 xlink_thing_publish_attribute(struct xlink_sdk_instancesdk_instance, xlink_uint16 messageid, xlink_uint8 data, xlink_int32 datalength);
功能:用户上报物模型数据调用此函数。
参数 说明 **sdk_instance sdk 实例指针的指针 *messageid 消息ID,SDK分配 * data 物模型返回数据 datamaxlength 最大数据返回长度 返回 说明 xlink_int32 数据发送长度 上报数据格式
{ "v":2, "time":上报时间戳, "attribute":{ "属性字段":属性值 } }
34. 物模型服务订阅
XLINK_FUNTION xlink_int32 xlink_sub_service(struct xlink_sdk_instance *sdk_instance, const char name);
功能:用户用此函数订阅自己的服务。
参数 说明 **sdk_instance sdk 实例指针的指针 * name 物模型服务名称 返回 说明 xlink_int32 数据发送长度
35. 物模型服务回调
- XLINK_FUNTION xlink_int32 xlink_service_cb(struct xlink_sdk_instance sdk_instance, const charname,const char payload, xlink_uint16 payload_length, xlink_uint8 *data, xlink_int32 datamaxlength);
功能:此函数需要用户去实现,当物模型数据下发时触发此函数,用户自行实现处理。
参数 说明 **sdk_instance sdk 实例指针的指针 * name 物模型服务名称 * payload 物模型下发数据 payload_length 物模型下发数据长度 * data 物模型返回数据 datamaxlength 最大数据返回长度 返回 说明 xlink_int32 数据返回长度 下发数据格式,input为用户收到的属性数据,与物模型同名服务需要的输入参数对应
{ "v":2, "input":{ "属性字段":属性值 } }
返回数据格式,output的属性字段和属性值要与物模型同名服务需要的输出参数对应
{ "v": 2, "code": 200, "output":{ "属性字段":属性值 } }
36. 物模型数据上报
XLINK_FUNTION xlink_int32 xlink_thing_event_report(struct xlink_sdk_instance* sdk_instance,xlink_uint16 messageid,const charname, xlink_uint8 data, xlink_int32 datalength);
功能:用户上报事件调用此函数。
参数 说明 **sdk_instance sdk 实例指针的指针 *messageid 消息ID,SDK分配 * name 物模型事件名称 * data 物模型返回数据 datamaxlength 最大数据返回长度 返回 说明 xlink_int32 数据发送长度 上报事件数据格式,属性名和属性值与后端物模型同名事件保持一致
{ "v":2, "time":0, "extra":{ "属性名称":属性值 } }
注意事项
目前,所有用户在一般情况下均能使用硬件SDK(Xlink Device SDK)。
主要限制有:
- 硬件SDK(Xlink Device SDK)设计框架是跑单线程的,对于具有多线程操作并不支持
- 需要注意对内存的操作保护